#include <iostream>
#include <signal.h>
#include <unistd.h>
#include <errno.h>

// 自定义信号处理函数
void handlerSig(int signo)
{
    std::cout << "进程 " << getpid() << " 收到信号 " << signo << "，处理完毕" << std::endl;
}

int main()
{
    // 注册SIGINT（Ctrl+C）的自定义处理函数
    signal(SIGINT, handlerSig);

    std::cout << "进程 " << getpid() << " 调用 pause()，开始阻塞..." << std::endl;
    int ret = pause(); // 阻塞，等待信号

    // pause() 被信号唤醒后才会执行以下代码
    if (ret == -1 && errno == EINTR)
    {
        std::cout << "pause() 被信号中断，返回值：" << ret << "，errno：" << errno << std::endl;
    }

    std::cout << "进程继续执行，退出" << std::endl;
    return 0;
}